package app

import (
	"administrator/app/interceptors"
)

const api = "/api"

func (admin *AdministratorServer) Router() {
	admin.Get("/", func() string {
		return "/index.html"
	})
	pub := admin.Group("/public")
	pub.Get("/menu", admin.MenuManage.List) // 菜单路由
	pub.Post("/login", admin.User.Login)    // 用户登录

	pub.Post("/send", admin.User.Send)

	pub.Get("/ws", admin.User.Message)

	system := admin.Group("/api", interceptors.TokenInterceptor{}, interceptors.GetRbac())

	// user
	system.Get("/default/our", admin.User.DefaultOrgRole)           // 获取用户所在组织默认角色
	system.Get("/user/info", admin.User.Info)                       // 获取用户的个人信息
	system.Post("/user/quit/org", admin.User.QuitOrg)               // 用户退出组织
	system.Post("/user/org/default", admin.User.SetDefaultOrg)      // 设置用户默认组织
	system.Post("/user/role/default", admin.User.SetDefaultOrgRole) // 设置用户组织默认角色
	system.Post("/user/setting/header", admin.User.SettingHeader)   // 设置上传头像
	system.Post("/user/setting/info", admin.User.EditInfo)          // 用户修改基础信息

	// 配置相关接口
	config := system.Group("/configuration")

	// menu 配置
	config.Get("/menu/tree", admin.MenuManage.Tree)             // 获取菜单树
	config.Get("/menu/role/tree", admin.MenuManage.GetRoleTree) // 获取 根据角色权限菜单树
	config.Get("/menu/our/tree", admin.MenuManage.GetOurTree)   // 根据 用户所在组织的角色查询菜单权限
	config.Get("/menu/our/menuList", admin.MenuManage.MenuList) // 根据 用户所在组织的角色查询菜单路由列表
	config.Get("/menu/list", admin.MenuManage.List)             // 获取菜单列表
	config.Post("/menu/add", admin.MenuManage.Add)              // 添加菜单
	config.Post("/menu/del", admin.MenuManage.Delete)           // 删除指定菜单
	config.Post("/menu/status", admin.MenuManage.ModifyStatus)  // 变更路由状态 启动 或者 禁用

	// func 功能配置
	config.Get("/func/list", admin.FuncManage.FuncList)               // 查询功能列表
	config.Get("/func/role/list", admin.FuncManage.FuncRoleList)      // 根据角色查询功能列表
	config.Post("/func/add", admin.FuncManage.Add)                    // 添加功能
	config.Post("/func/del", admin.FuncManage.Del)                    // 删除功能
	config.Post("/func/update/status", admin.FuncManage.UpdateStatus) // 修改功能状态

	// account 相关操作
	config.Get("/user/accounts", admin.AccountManage.AllAccount) // 获取系统用户账号
	config.Get("/user/edit", admin.AccountManage.GetUserInfo)    // 获取账号基本信息
	config.Get("/user/orgList", admin.AccountManage.GetOrgList)  // 查询用户组织
	config.Post("/user/add", admin.AccountManage.Add)            // 添加账号
	config.Post("/user/del", admin.AccountManage.Del)            // 删除账号

	// org 组织相关操作
	config.Get("/org/user", admin.OrgManage.GetOrgUser)                 // 获取用户所在组织成员
	config.Get("/org/list", admin.OrgManage.GetOrg)                     // 获取用户所在组织
	config.Get("/org/list/child", admin.OrgManage.OrgList)              // 获取指定id下的子树
	config.Get("/org/role/list", admin.OrgManage.GetOrgRole)            // 获取组织中的角色
	config.Get("/org/user/role", admin.OrgManage.GetUserRoleList)       // 获取组织指定用户的角色列表
	config.Get("/org/user/roleMenuList", admin.OrgManage.GetMenuAuths)  // 获取指定角色的菜单授权信息
	config.Get("/org/user/roleFuncList", admin.OrgManage.GetFuncAuths)  // 获取指定角色的功能授权信息
	config.Get("/org/user/menuList", admin.OrgManage.UserMenu)          // 获取用户所在组织当前角色的已授权菜单列表
	config.Get("/org/user/funcList", admin.OrgManage.UserFunc)          // 获取用户所在组织当前角色的已授权功能列表
	config.Post("/org/create", admin.OrgManage.AddOrg)                  // 创建组织
	config.Post("/org/del", admin.OrgManage.DelOrg)                     // 删除组织
	config.Post("/org/add/role", admin.OrgManage.AddOneRole)            // 组织添加角色
	config.Post("/org/del/role", admin.OrgManage.DelOneRole)            // 组织删除角色
	config.Post("/org/edit/role", admin.OrgManage.EditRole)             // 组织编辑角色
	config.Post("/org/user/edit/menu", admin.OrgManage.EditMenuAuth)    // 用户配置编辑菜单权限
	config.Post("/org/user/edit/func", admin.OrgManage.EditFuncAuth)    // 用户配置编辑功能权限
	config.Post("/org/user/add", admin.OrgManage.AddUser)               // 组织添加用户
	config.Post("/org/user/del", admin.OrgManage.DelUser)               // 组织删除用户
	config.Post("/org/user/auth/add/role", admin.OrgManage.AuthAddRole) // 添加用户角色
	config.Post("/org/user/auth/del/role", admin.OrgManage.AuthDelRole) // 删除用户角色

	// role 角色相关操作
	config.Get("/role/menu/list", admin.RoleManage.GetRoleMenuAuth)  // 获取指定角色下的菜单权限列表
	config.Post("/role/auth/menu/add", admin.RoleManage.MenuAuthAdd) // 给指定的角色进行菜单授权添加
	config.Post("/role/auth/menu/del", admin.RoleManage.MenuAuthDel) // 给指定的角色进行菜单授权取消

	config.Get("/role/func/list", admin.RoleManage.GetFuncAuth)      // 获取指定角色功能权限列表
	config.Post("/role/auth/func/add", admin.RoleManage.FuncAuthAdd) // 给指定的角色进行菜单授权添加
	config.Post("/role/auth/func/del", admin.RoleManage.FuncAuthDel) // 给指定的角色进行菜单授权取消
}
